{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Filter Design" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Using matplotlib backend: Qt4Agg\n", "Populating the interactive namespace from numpy and matplotlib\n" ] } ], "source": [ "%pylab\n", "%matplotlib inline\n", "from scipy import signal" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Ideal Filters" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "![image](ideal_filters.png)\n", "\n", "Ideal filters cannot be realized:\n", "\n", "- for analog filters the laws of physics prevents this,\n", "- for discrete filters we are stuck with the 'uncertainty principle' (finite support in frequency domain corresponds with infinite support in time domain, and vv)." ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "## Analog Low-Pass Filters" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "Analog filters very often serve as the starting point in designing a digital filter.\n", "\n", "Consider the following simple low-pass filter\n", "\n", "![image](https://upload.wikimedia.org/wikipedia/commons/thumb/3/3b/RC_Divider.svg/200px-RC_Divider.svg.png)\n", "\n", "Its transfer function is\n", "\n", "$$ H(s)=\\frac{1/Cs}{1/Cs+R} = \\frac{1}{sRC+1} $$" ] }, { "cell_type": "code", "execution_count": 56, "metadata": { "collapsed": false }, "outputs": [], "source": [ "H = signal.lti([1], [1,1])" ] }, { "cell_type": "code", "execution_count": 57, "metadata": { "collapsed": false }, "outputs": [], "source": [ "w = logspace(-3,5)\n", "w, Hw = H.freqresp(w)" ] }, { "cell_type": "code", "execution_count": 58, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "loglog(w,abs(Hw));\n", "xlabel(r'$\\omega$ (rad/$s$)');" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "(array([ 1., 0., 0.]), array([ 1., 2., 1.]))" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "signal.lp2hp([1],[1,2,1])" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\ns9rkhGF1bdOm9HyOefPSbdeXLEnPJf/Qh+CDH0zbu+2Wd5RmtcEJwxrK+vXprKOlPPIIHHEEvP/9\nqYweDQcd5Al0s21xwrCGtnFjmv/44x/hvvvg/vvhrbfghBNSGTkylQMOcBIxc8Iwa2PNGli0KN2u\n5MEHU0J544207uPoo+Goo+DII9PcyJ575h2tWddxwjArwXPPweLFqTz6KDz+eJoP6dcvPRzqsMNS\nGT48PfPjgAN8aa/VHycMs07asgX+939h2TJ44on0dMHm5lSefz490/zgg9OdeN/73jQ3MnRoqt9z\nTw9xWe1xwjCrgI0bYflyePrpVFasSO+XL4eVK9PakQMPhCFDYPDgVAYNSuU970ll772hm+/3bFWk\n7hKGpLOAaaRbq/80Iq7eRhsnDMvV+vUpcaxenZ4Bsnp1Ks88A3/9a5pHefVVGDAA9t8/vQ4cmMq+\n+6YyYEB6BG5L2W03n7VYZdVVwpDUDXgSOA34K7AImBgRT7RpV9cJo6mpiUKhkHcYFVHPfYN392/T\npjR38swzafX6c8+1vj7/fCovvNBatmxJq9pbSv/+ra977plKv37vLn37tpZdd618wmmk3189qnTC\n6FGpD96OUUBzRKwEkHQTMA54Yod71Zl6/qOt577Bu/u3665pyGrIkNL2ff11eOmldHffdetay0sv\npTOap55K79evby2vvprKK6/A22/D7rvDHnuksvvuqfTp0/raUnbbrbX07t36Wlx69dq6LFzYOL8/\n67iuThiDgOKHfK4mJRGzute7d+s8SGe8+Sa89lpKIK+91rq9YUMqr72W5mY2bEivzz+fktTGjam8\n/nrr+02bWt9v2pQuS37jjXSMq65KybBt6dmz9bW47LJL6+v2So8e23/t0SNdsdbe645Kt25bb3fr\ntvX266/Dyy+3vm9bpNZX21pXJwwz66SePVuHsyplyhSYPDklkbblzTdT2bQpLZ5sqXvrrVSKt9uW\nzZtb99u8ubX+7bfT+5by9tutdcU/a6nfVtmyZevtLVu23t6yJSXVH/+49WcRW2+3jIa3JI+2iaS4\nrqW0976lPPVUSrq1qqvnME4EpkbEWdn7SUC0nfiWVL8TGGZmFVRPk97dgWWkSe9ngPuB8yJiaZcF\nYWZmndKlQ1IR8baky4B5tF5W62RhZlYDqnLhnpmZVZ+KrFOVdJakJyQ9KenK7bS5VlKzpIclHdve\nvpL6S5onaZmkuZL6Ff1scvZZSyWNqUSf2sTeZf2TdLqkByQ9ImmRpFPrpW9FPz9A0quSrqhcz3Yc\nY5s25fzbPFrSfZIey36HPeulf5J6SLpB0mJJj2dzkhVVof6dm/1+3pY0ss1n1cN3yzb716nvlogo\nayEloaeAA4FdgIeBw9q0GQv8d7Y9GvhTe/sCVwNfy7avBK7Ktg8HHiINrx2U7a9y9yvH/h0D7Jdt\nHwGsrpe+FX3mr4GbgSsq1becfnfdgUeAI7P3/evsb/M84MZsuzewHDigBvt3KHAIsAAYWfRZI6iP\n75bt9a/D3y2VOMN4Z3FeRLwFtCzOKzYOmAEQEX8G+kka2M6+44Dp2fZ0YHy2fQ5wU0RsjogVQDOV\nXdvRpf2LiEci4tls+3Ggl6Rd6qFvAJLGAf8DPF6ZLr1LV/dvDPBIRDyWfd66yP51VkhX9y+APkoX\ns+wGbAJeqUjPkor0LyKWRUQz0PbqonHUwXfL9vrXme+WSiSMbS3Oa7tUaXttdrTvwIhYC5B1csB2\nPmvNNo5XTl3dv3dIOhd4MPuDqISu6ttAAEm7A18DvsnW/1groat/d8MBJM3JTv2/Wo5O7ECX/v6A\nW4CNpCseVwD/LyJe3ulebF+l+lfq8Wr1u6VdpX63VMvCvc58WdTSbP1O90/SEcB3gDPKElH5dKZv\nW7LXKcA1EbFRaWltNa6v3ZnfXQ/gJOAE4A3gt5IeiIiF5QquDHbm9zca2AzsB+wN3CNpfva/8WpR\njX9T5bTT/evId0slEsYa4ICi94OzurZthmyjTc8d7PuspIERsVbSfsBz7XxWpXR1/5A0GLgV+FSF\n/zF2dd9GA38r6buk8f23Jb0eEdeXpTdb6+r+rQZ+HxHrACTNBkYClUoYXd2/84A5EbEFeF7SvaTk\nuKIMfdmWSvVvR8erh++W7erwd0sFJm660zr50pM0+TKiTZuzaZ24OZHWiZvt7kuaeLsytp54a5n0\n7gkMpfITU13dvz2zduMr1ae8+tbmc6dQ+UnvPH53DwC9SP85uxsYW+P9m1TUv6+R1lIB9CHNQx1Z\na/0r2nchcHzR+7r4btlB//rRwe+WSnX8LNKK7mZgUlb3OeCzRW2uyzr4CO+eud9q36x+L2B+9rN5\nwJ5FP5ucfdZSYEylfqF59A/4P8CrwIPZH++DwD710Lc2x614wsjpb/PjwGPAYuA79dQ/UpKYmfXv\nsRr+/Y0njf+/TpqPuavoZ/Xw3bLN/tGJ7xYv3DMzs5L4AZNmZlYSJwwzMyuJE4aZmZXECcPMzEri\nhGFmZiXzkDtaAAAAGElEQVRxwjAzs5I4YZiZWUmcMMzMrCT/HydF6GwrtFXdAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ws, ir = H.impulse()\n", "plot(ws, ir);" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "loglog(w/(2*pi),abs(Hw));\n", "xlabel(r'$f\\quad (Hz)$');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A second order low-pass filter (in standard form where $\\omega_c=1$) has transfer function:\n", "\n", "$$ H(s) = \\frac{1}{s^2 + \\frac{s}{Q} + 1)} $$\n", "\n", "where $Q$ is the *quality factor*." ] }, { "cell_type": "code", "execution_count": 55, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYQAAAEZCAYAAACXRVJOAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAHtRJREFUeJzt3XucVXW9//HXh5v8KIW84CFQUgn1oCRZBD7oOGUdUDOs\nzPCgGUioHElBE0x9zEg3r3hMFNDQoySRpB3wcoxMR/SQOF4hZEKrIyBJR4JANFH4/P5Ya3Qz7hlm\n9l57f9fa+/18POYxe61ZlzfDnvnM9/td67vM3REREekQOoCIiKSDCoKIiAAqCCIiElNBEBERQAVB\nRERiKggiIgKoIIiISEwFQUREAOhU7hOa2WHA+cA+wCPuPqvcGURE5IMs1J3KZmbAHe7+zSABRERk\nFwV3GZnZHDPbYGbLm60fYWaNZrbazKa0sO9JwP3Ag4WeX0REklVwC8HMhgFvAHe6+8B4XQdgNXAc\nsB5oAEa5e6OZnQEMAq5x97/E29/v7l8q/p8hIiLFKngMwd2fMLO+zVYPBl5y91cAzGw+MBJodPe5\nwFwzO9bMpgJ7AA8Uen4REUlW0oPKvYG1OcvriIrEe9z9MeCx1g5iZpqCVUSkAO5uhe6b2stO3b1d\nH7W1tYnuk+9rzdclfc4s59zd9tWcsxz/51nJ2dZ1acuZlZ/1YiVdEF4FDsxZ7hOvK7mamppE98n3\ntULOkcQxspBzd9tXc85y/J8Xep5i98/Ce3N3+1R7zl20t4I1q0YfA1bkLHcEXgb6Al2A54HDCziu\n19bW+qOPPuppVltbGzpCmyhnspQzWVnImfaMjz76qNfW1nr0K73w3+nFXHY6D1gK9DezNWY2xt13\nABOBxcBKYL67ryrk+HV1dclXv4SlPV8T5UyWciYrCznTnrGmpoa6urqijxPsxrTWmJmnMZeISJqZ\nGV6Jg8oiIlJeqS0IdXV11NfXh44hIpJ69fX16jISEZH3qctIREQSoYIgIiKACoKIiMRUEEREBEhx\nQdBVRiIibaOrjEREZBe6ykhERBKhgiAiIoAKgoiIxFQQREQEUEEQEZGYCoKIiAAqCCIiElNBEBER\nIMUFQXcqi7TN44/DN74Bd9wBb74ZOo2EoDuVRarctm3wve/BL38JF14Iv/0tPPkkjBoF48bBoEGh\nE0q56U5lkSpUXw8DB8KmTbBiBUyeDA88AM8/D/vvDyefDJ/6FMyeDVu2hE4rWRGkhWBm3YDHgFp3\nfzDP19VCEMnjjTdgyhRYuBBmzoSTTsq/3Y4d8JvfRAXhj3+MCkUH/flX8bLaQpgC/CLQuUUyZ+dO\neOghOPLIaJxgxYqWiwFAx44wYgTce2/0+te/Ll9Wya6CC4KZzTGzDWa2vNn6EWbWaGarzWxKnv2+\nALwI/B9QcCUTqXRvvx0VgXPOgT59onGCm26C22+Hj3ykbccwi7qTrruutFmlMhTcZWRmw4A3gDvd\nfWC8rgOwGjgOWA80AKPcvdHMzgA+CewF/B0YALzp7l/Jc2x1GUlV2rgRFi+OuoQeegiOOAJGjow+\n+vcv7Jjbt8NBB8GDD8InPpFsXkmXYruMihpDMLO+wH05BWEI0bjA8fHyVMDd/ao8+34TeF1jCFIt\ndu6MBng3bYJXX4WXX4769//4x/dfb98ONTVRATjppGiAOAlXXgmrVkWXpkrlKrYgdEoyDNAbWJuz\nvA4YnG9Dd7+ztQP9QiMMVa+1vwla+lru+qbX+T43fTRf3rnz/c+5r3fsgHffjT6aXu/YAe+8E3Xt\nvP02/OMfu37eti365b95c/SxZQt8+MPQowd89KPQrx8ccggcf/z7r/fbL+rmSdr48dE51q+Pzi2S\nT9IFITHTptW997pnzxp69qwJlkXCae2XY0tfy13f9Drf56aPpuUOHd7/nPvaDDp1igZncz936gRd\nu0a/xPfYI3rd9LlrV+jWLerr79Ej+thrr2jfEPbeG0aPjsYgfvjDMBkkefX19YnewFuKLqM6dx8R\nL7fYZbSb46rLSCRhL78MQ4fC//4vfOhDodNIKYS+7NTY9UqhBqCfmfU1sy7AKGBRkecQkQT06wfD\nhmkcQVpWzGWn84ClQH8zW2NmY9x9BzARWAysBOa7+6pCjq+5jESSd+GFcP310fiHVA7NZSQi7eYO\nn/kMXHppdCWTVJbQXUYikiFNN6pNnx46iaSRCoJIlTnllGhg+emnQyeRtEltQdAYgkhpdOoE3/mO\nWgmVRGMIIlKwv/89ms7i+efhwANDp5GkaAxBRNqte3f41rfgP/4jdBJJE7UQRKrUq69G02mvWAG9\ne4dOI0kIOrldqaggiJTHd78bPXRn5szQSSQJKggiUrCNG+HQQ2HZsmhyPcm2ih1D0FVGIqW3zz7R\nFUe1taGTSDF0lZGIJGLr1mieo4cfjsYUJLsqtoUgIuWx554wdSpcdlnoJBKaWggiwj/+AR//OCxY\nAEOGhE4jhVILQUSK1rVrNI5w6aWhk0hIKggiAsCZZ8LatdFYglQnFQQRAaBzZ5g2Db73vdafZy2V\nSwVBRN5z6qmwfTssXBg6iYSgQWUR2cUDD8DFF8Py5dCxY+g00h4VO6isG9NEwjjhBPjIR2Du3NBJ\npK10Y5qIlMyyZfDVr8KqVbDXXqHTSFtpLiMRKYmxY2HvveHaa0MnkbZSQRCRktiwAY44ApYsgcMP\nD51G2iJzYwhmdqyZLTGzmWb2L+U+v4i0zf77RzeqnX++LkOtFiEGlR3YCuwBrAtwfhFpo3//9+hB\nOv/1X6GTSDkUXBDMbI6ZbTCz5c3WjzCzRjNbbWZTmu/n7kvc/URgKjCt0POLSOl17gw33giTJ8Nb\nb4VOI6VWTAvhdmB47goz6wDMiNcPAE4zs8Pir51hZtPNrFe8+WagSxHnF5Ey+Pzn4dOfhquuCp1E\nSq2oQWUz6wvc5+4D4+UhQK27Hx8vTwXc3a/K2ecrRAWjOzDT3ZfkOa4GlUVSZM0a+OQn4emn4WMf\nC51GWpK2QeXewNqc5XXxuve4+6/c/Rx3Py1fMRCR9DnwQJg0Keo6ksrVKXSAluTedVdTU0NNTU2w\nLCICF14YXYb6m9/AF78YOo1AdIdykjM6lKLLqM7dR8TLH+gyauNx1WUkkkL33RfNc/TCC9BFI4Cp\nE7rLyOKPJg1APzPra2ZdgFHAoiLPISIp8aUvwcEHw/TpoZNIKRRz2ek8YCnQ38zWmNkYd98BTAQW\nAyuB+e6+qpDja3I7kfQxgxkzouks/vSn0GmkiSa3E5Fgrr4aHnkE/vu/oyIh6RC6y0hEqtCkSbB+\nPdx9d+gkkiS1EESkIL/7HXzta/Dii9CjR+g0AhXcQtAYgki6DR0KI0fCJZeETiIaQxCR4DZvhn/+\nZ7jnnqhASFgV20IQkfTr0QOuvx7Gj4d33gmdRoqlgiAiRTn1VOjTR/cmVAJ1GYlI0f7852hG1IYG\nOOig0Gmql7qMRCS4gw6C734XJkzQ09WyLLUFQVcZiWTL5MnR09Xmzw+dpProKiMRSZ2nnoIvfxl+\n/3vYd9/QaapPsV1GKggikqhJk+Bvf4M77gidpPqoIIhIqrzxRvTchFtugX/919BpqosGlUUkVT78\nYZg9G84+OyoOkh1qIYhISXzzm9E4gu5PKB91GYlIKr3+etR1tGgRDB4cOk11UJeRiKRSU+tg3DhN\na5EVKggiUjKnnRZNa3H11aGTSFuktiDoxjSR7DODWbOiCfAaG0OnqVy6MU1EMuPGG6Onqz32GHRI\n7Z+h2acxBBFJvQkTYMeO6HJUSS+1EESkLF58EY49Fp55Bg48MHSaypS5y07NzIDvA3sBDe4+N882\nKggiFegHP4ClS+GBB6LxBUlWFruMRgJ9gO3AugDnF5FALr44mhH1rrtCJ5F8Ci4IZjbHzDaY2fJm\n60eYWaOZrTazKXl2PRT4H3e/CJhQ6PlFJHu6dIE5c+DCC+Gvfw2dRporpoVwOzA8d4WZdQBmxOsH\nAKeZ2WHx184ws+nAemBTvMuOIs4vIhn0qU/BmWfCd74TOok0V3BBcPcneP8Xe5PBwEvu/oq7vwPM\nJ+oiwt3nuvtk4JfACDO7AXis0POLSHbV1UWDywsXhk4iuTolfLzewNqc5XVEReI97v4WMC7h84pI\nhnTrBj/9KYweHV151KNH6EQCyReExOTedVdTU0NNTU2wLCKSvGOPhZNOip7FfOutodNkU319faIz\nOhR12amZ9QXuc/eB8fIQoM7dR8TLUwF396vaeVxddipSBbZsiWZEvf12OO640GmyL/RlpxZ/NGkA\n+plZXzPrAowCFhV5DhGpUHvtBTNnwre/Ddu2hU4jxVx2Og9YCvQ3szVmNsbddwATgcXASmC+u68q\n5Pia3E6kOpx4IhxzDFx2Wegk2aXJ7USkYrz+Ohx5JNx7LwwdGjpNdoXuMhIRKdq++8INN8BZZ8Hb\nb4dOU71UEEQkFb7+dTj0UPj+90MnqV6pLQgaQxCpLmZw881wyy3w3HOh02SLxhBEpCLdfjv85Cfw\n1FPQuXPoNNmiMQQRqSjf+hb07AnXXBM6SfVRC0FEUueVV+Doo+Hxx+Hww0OnyQ61EESk4vTtC1dc\nEV11tENzIpeNCoKIpNK550KnTjBjRugk1SO1BUFXGYlUtw4dohlRv/99+NOfQqdJN11lJCJV4Zpr\n4KGH4OGH9Rzm3dEYgohUtEmTYOvWqLUgpaUWgoik3u9/D5/7HDz7LBxwQOg06aUWgohUvCOOgIkT\n4ZxzQH8rlo4KgohkwtSpsG4d3HVX6CSVS11GIpIZzzwDJ5wAy5fD/vuHTpM+xXYZqSCISKZccgm8\n/DIsWBA6SfpoDEFEqkptLaxYAffcEzpJ5UltQdCNaSKST9eucNtt0SDzxo2h06SDbkwTkap2wQVR\nQZg7N3SS9NAYgohUpW3bYODA6NkJJ54YOk06qCCISNV65BE488zoxrXu3UOnCS9zBcHMhgGjgU7A\n4e4+LM82Kggi0iZnnx19nj07bI40yFxBeO/EZiOBnu5+a56vqSCISJv8/e9w5JHRozePOy50mrCC\nXXZqZnPMbIOZLW+2foSZNZrZajOb0soh/g2YV+j5RUQg6iqaNQu+/W14443QabKtmMtObweG564w\nsw7AjHj9AOA0Mzss/toZZjbdzHqZ2QHAZnffVsT5RUSA6O7lz34WLr00dJJsK7gguPsTwKZmqwcD\nL7n7K+7+DjAfGBlvP9fdJ7v7X4CziAqKiEgirr8+unv5iSdCJ8mupG9M6w2szVleF6/bhbvXufuT\nCZ9bRKrY3ntHj9s86yx4663QabKpU+gALcm9666mpoaamppgWUQkG776VZg/H664Aq68MnSa0quv\nr090RoeirjIys77Afe4+MF4eAtS5+4h4eSrg7n5VO4+rq4xEpCAbNkQ3rN1/P3z606HTlFfoye0s\n/mjSAPQzs75m1gUYBSwq8hwiIm22//7ReMLYsbB9e+g02VLMZafzgKVAfzNbY2Zj3H0HMBFYDKwE\n5rv7qkKOr8ntRKRQp50GH/sY/OhHoZOUhya3ExFpxauvwlFHwW9/G3UhVYPQXUYiIqnUu3c0sDxm\nDLz7bug02aCCICIVa+zY6HLUa68NnSQbUlsQNIYgIsUyg1tvjQpCY2PoNKWjMQQRkTa66Sa46y54\n/HHo2DF0mtLRGIKIyG6cey506hTdySwtUwtBRKrCSy/B0KGwbBkcckjoNKWhFoKISBt8/ONwySUw\nbhzs3Bk6TTqpIIhI1bjggmjiu1s/8FgugRQXBF1lJCJJ69gR5syByy6DNWtCp0mOrjISESnQD38Y\nPTfhwQejS1MrhcYQRETa6eKL4bXX4M47QydJF7UQRKQqPfccDB8OL7wAvXqFTpMMtRBERAowaBCM\nHx/do6C/PyMqCCJStS6/HFavhrvvDp0kHdRlJCJVbdkyGDkSVqyA/fYLnaY4xXYZqSCISNW76CJY\nvx7mzQudpDgaQxARKdK0adDQAAsXhk4SVmoLgm5ME5Fy6dYtumFtwgTYtCl0mvbTjWkiIgk77zx4\n80247bbQSQqjMQQRkYRs3QpHHgmzZ0f3KGSNxhBERBKy557RxHfjx8OWLaHTlF/ZWwhmdgDwE2Aj\n8JK7X5VnG7UQRCSYceOgSxe4+ebQSdoniy2EI4EF7j4OOCrA+UVEWnXttbBoEVTbdS0FFwQzm2Nm\nG8xsebP1I8ys0cxWm9mUPLs+CYwzs4eBhwo9v4hIqfToAbNmRS2FbdtCpymfgruMzGwY8AZwp7sP\njNd1AFYDxwHrgQZglLs3mtkZwCeBvwGPuvsTZrbA3b+e59jqMhKR4E4/HXr2hOnTQydpm6BXGZlZ\nX+C+nIIwBKh19+Pj5amA544TmNkAoA54Hdjq7hfnOa4KgogEt3EjHHEE3Htv9DzmtCu2IHRKMgzQ\nG1ibs7wOGJy7gbuvBD7QKhARSZt99oEbb4SxY6Ppsrt2DZ2otJIuCInJveuupqaGmpqaYFlEpHqd\ncgrMnw9XXAE//nHoNLuqr69PdEaHUnQZ1bn7iHj5A11GbTyuuoxEJDU2bICBA6NHbh59dOg0LQt9\n2anFH00agH5m1tfMugCjgEVFnkNEJKj994frrou6jrZvD52mdIq57HQesBTob2ZrzGyMu+8AJgKL\ngZXAfHdfVcjxNbmdiKTJ6NFwwAFw5ZWhk3yQJrcTESmzdeuiR28+8kg051HahO4yEhGpGn36RAPL\nY8fCu++GTpM8FQQRkXY46yzo3j07N6u1R2oLgsYQRCSNzKIZUa++GhobQ6eJaAxBRCSgGTOiZzA/\n/jh07Bg6TURjCCIiAUyYEBWCGTNCJ0mOWggiIgVavRqOOQaWLYNDDgmdRi0EEZFg+veHqVOjabJ3\n7gydpnipLQgaVBaRLJg0Cd58MxpoDkWDyiIiKbFyJdTUwDPPwIEHhsuhLiMRkcAGDIDzz4ezz4Ys\n/y2rgiAikoApU+C11+DOO0MnKZy6jEREEvLcczB8OLzwAvTqVf7zq8tIRCQlBg2C8ePh3HOz2XWk\ngiAikqDLL4/uT7j77tBJ2k9dRiIiCVu2DE4+GZYvh/32K995i+0yUkEQESmBiy6C9euj+Y7KRWMI\nIiIpNG0aNDTAwoWhk7RdaguC7lQWkSzr1g3mzIkmwdu0qbTn0p3KIiIZcN550dQWt91W+nNpDEFE\nJMW2bo2evzx7dnSPQilpDEFEJMX23DOa+G78eNiyJXSa1pW9hWBmhwN1wOvAI+5+T55t1EIQkYoy\nbhx06QI331y6c2Suy8jMJgPL3P1/zGyhu4/Ms40KgohUlM2b4Ygj4Gc/i2ZGLYVgXUZmNsfMNpjZ\n8mbrR5hZo5mtNrMpeXadC4wys6uBvQs9v4hIlvToAbNmRS2FbdtCp8mv4BaCmQ0D3gDudPeB8boO\nwGrgOGA90ACMcvdGMzsDGARc4+5/ibe9x92/kufYaiGISEU6/XTo2ROmT0/+2EG7jMysL3BfTkEY\nAtS6+/Hx8lTA3f2qZvt8D+gGzHT3pXmOq4IgIhVp48ao6+jee2Ho0GSPXWxB6JRkGKA3sDZneR0w\nOHcDd38FODvh84qIZMI++8CNN8LYsdF02V27hk70vqQLQmJy77qrqamhplSjMCIiZXbKKTB/fjS9\nxY9+VPhx6uvrE53RoRRdRnXuPiJe/kCXURuPqy4jEalor70Gn/gEPPggHH10MscMfWOaxR9NGoB+\nZtbXzLoAo4BFRZ5DRKTi/NM/wXXXRV1H27eHThMp5rLTecBSoL+ZrTGzMe6+A5gILAZWAvPdfVUh\nx9fkdiJS6UaPhgMOgCuvLO44mtxORKQCrFsXPXrzkUeiOY+KEbrLSEREitCnD/z4x1HX0bvvhs2i\ngiAiEthZZ0H37qW5Wa09UlsQNIYgItXCLJoR9eqr4Q9/aP/+GkMQEakwM2bAz38OS5ZAx47t319j\nCCIiFWLCBOjQAW66Kcz51UIQEUmR1avhmGPgqafg4IPbt69aCCIiFaR/f5g6NZomu9x/F6e2IGhQ\nWUSq1aRJ0TMTbr21bdtrUFlEpIKtXBk9We3ZZ6O7mdtCXUYiIhVowAA4/3w4++zydR2pIIiIpNSU\nKfCXv8DcueU5n7qMRERS7LnnYPhweOEF6NWr9W3VZSQiUsEGDYLx46N7FEr9d7IKgohIyl1+eTSl\nxYIFpT2PuoxERDJg2TI4+WRYvhz22y//NsV2GakgiIhkxEUXwauvRvMd5aMxBBGRKjFtGjz9NCxc\nWJrjp7Yg6E5lEZFddesGc+ZEA8ybNr2/Xncqi4hUqfPOgzffhNtu23W9xhBERKrM1q3R85dnz47u\nUWiiMQQRkSqz557RxHfjx8OWLckdt6QtBDM7CLgU2MvdT43XdQNuBt4GHnP3eXn2UwtBRGQ3xo2D\nLl3g5puj5VS3ENz9z+4+rtnqrwIL3P1s4MulPH+pZWXQWzmTpZzJykLOtGa89lpYtAiSitemgmBm\nc8xsg5ktb7Z+hJk1mtlqM5vSxnP2AdbGr3e0I2vqpPVN0pxyJks5k5WFnGnN2KMHzJoVtRS2bSv+\neG1tIdwODM9dYWYdgBnx+gHAaWZ2WPy1M8xsupk1TcWU24RZS1QUmq8vSiH/Ya3tk+9rSbwpKjXn\n7rav5pzl+D8v9DzF7p+F9+bu9sl6zi99CYYMiaa3KFabCoK7PwFsarZ6MPCSu7/i7u8A84GR8fZz\n3X0y8LaZzQSOymlB/Ao4xcxuAu4r/p8Q0ZukuHMUewwVhMLP2d59VBDaf4xKz3nDDS3fvdwebR5U\nNrO+wH3uPjBe/how3N3Hx8unA4Pd/TtFhzLTiLKISAGKGVTulGSQpBTzDxIRkcIUc5XRq8CBOct9\n4nUiIpJB7SkIxq6DwA1APzPra2ZdgFHAoiTDiYhI+bT1stN5wFKgv5mtMbMx7r4DmAgsBlYC8919\nVemiiohIKaVyLiMRESm/TM1lZGaHmdlMM7vbzM4JnaclZjbSzG4xs5+b2RdD58nHzA4ys5+a2d2h\ns7TEzLqZ2X+a2Wwz+7fQeVqShe8lZON9Cdn5OYf33qMNZnZC6CwtMbNjzWxJ/D39l9a2zVRBcPdG\ndz8X+AZwTOg8LXH3hfHluOcCp4bOk08L04qkTSamOcnI9zIT70vIzs95bArwi9AhdsOBrcAewLrW\nNgxSEIqZCsPMTgLuBx5Mc87YZcBNKc9YNgVkDTLNSVa+p0XkLPn7slmeducs5895oTnN7AvAi8D/\nkeCsC0nndPcl7n4iMBWY1urB3b3sH8Aw4Chgec66DsDLQF+gM/A8cFj8tTOA6UCvnO3vT3HOjwJX\nAp9PccZe8fKCFP+/jwZOiF/PS2vOnG3K9r0sNGe53pdJfD/j7Ur+c17E+/MH8c/Sr4FfpTVnzjZd\ngLtbO3aQFoIXPhVGfzO7wcxmAQ+kOOfXgOOIpugYn9KM+aYVKan2ZqVE05wkndPM9i7397LAnBMp\n0/uyyJzHlvPnvNCc7n5Z/LN0F3BrWnOa2Vfi7+UdRPPPtShNdyr35v3uAYj6ugbnbuDujwGPlTNU\nHm3JeSNwYzlDNdOWjH8j6ksOrcWs7v4mMDZEqDxay5mW7yW0njP0+zJXaznT8HPepC0/S3eWNVF+\nrX0/f0X0x9VuZWpQWURESidNBSErU2FkIWcWMjbJSlblTJZyJiuRnCELQlamwshCzixkbJKVrMqZ\nLOVMVmlylmtkvNlo9zxgPdFzldcAY+L1xwN/AF4CpobIlrWcWciYtazKqZzVmlNTV4iICJCuMQQR\nEQlIBUFERAAVBBERiakgiIgIoIIgIiIxFQQREQFUEEREJKaCICIigAqCiIjEVBBEcphZVzOrN7OC\nn4BlZrVmNrnZuplmNjTPtp3N7DEz08+iBKc3ociuxgL3eJ45XYopEsBngCebr/ToYSYPE01GJhKU\nCoLIrkYDCwHimSMbzewOM1sB9DGzX5lZg5mtMLNxTTuZ2aVm9gczWwIcmntAMzsMWJ2vyMQWxucV\nCSpNT0wTSZSZ9QI+6u7P5Kx7FPiCu+/Is31n4CB3X5Ozuh9whrs3xNuMcffNZtYVaDCze4CDgFOB\ngUTPrX0WeDrnGMcDD8X7DwCOBroCP/PoqXC/Bz6d0D9bpGBqIUgl+4y7P2Nm3czs4Hjdw8DOFrbf\nF9jcbN0rTcUgdoGZPU/U/dMH+DjwWaKHrL/t7lv54Dz0w4kLAnAW0AhsBz4M4O47iZ5x/aF2/wtF\nEqSCIJWsc/z5i8BH49d/bqXr5i2iv9xzbWt6YWbHAp8nKjRHAc/n2X4XZvb/gO7u/lq86mfAdOAr\n7v7XnE33AP7R+j9HpLRUEKSSHR5//jqwysw+C2xpaWN33wx0jJ841SR3ILk7sMnd347HBYbE65cA\nJ5vZHma2J3BSzj6fAx4FMLMvAke6+zDg9fdOYLY38Hq+biyRclJBkEq2VzwY/DjRX/Nfc/f7d7PP\nYmBYznJua+IhoLOZrQR+BPwOwN2fA+4GlgMPAE/l7PPe+AHwV6KuoVOBBTnbfC7eTyQoPTFNJIeZ\nDQIucPczEzre00RdTC3+9R8PTE9x95eTOKdIodRCEMkR/7X/aJH3HOQe71O7KQadiQakVQwkOLUQ\nREQEUAtBRERiKggiIgKoIIiISEwFQUREABUEERGJqSCIiAiggiAiIrH/D1nbK3ik4tq5AAAAAElF\nTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "Q = 2\n", "H2 = signal.lti([1],[1,100/Q,10000])\n", "w2, H2w = H2.freqresp(w=logspace(-3,5))\n", "loglog(w2, abs(H2w));\n", "xlabel(r'$\\omega$ (rad/$s$)');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To put the central frequency at say 1000 Hz we have to rescale the frequencies (remember that we substitute $s=j\\omega$ when we are looking at the frequency response), i.e. replace $s$ with $s/\\omega_c$:\n", "\n", "$$ H(s) = \\frac{\\omega_c^2}{s^2+s \\frac{\\omega_c}{Q} + \\omega_c^2} $$" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "Q = 2\n", "wc = 2*pi*1000;\n", "H2 = signal.lti([wc**2],[1,wc/Q,wc**2])\n", "w2, H2w = H2.freqresp()\n", "loglog(w2, abs(H2w));\n", "xlabel(r'$\\omega$ (rad/$s$)');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Below we plot the frequency reponse of both a first order and a second order low pass filter. The plot clearly shows that the second order filter has a steeper curve in the reject region of the filter. I.e. the second order filter better approximates the ideal filter." ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "loglog(w,abs(Hw));\n", "loglog(w2, abs(H2w));" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([-1570.79632679+6083.66801396j, -1570.79632679-6083.66801396j])" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "H2.poles" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def plot_poles(H):\n", " poles = H.poles\n", " plot(poles.real, poles.imag, 'x')" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "plot_poles(H2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "What about different values of $Q$?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Other Analog Filters" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "http://www.musicdsp.org/files/Audio-EQ-Cookbook.txt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### High Shelf Filter\n", "$$ H(s) = A \\frac{A s^2 + \\frac{\\sqrt{A}}{Q} s + 1}{s^2 + \\frac{\\sqrt{A}}{Q} s + A} $$\n", "\n", "and let the central frequency be set to $\\omega_c$:\n", "\n", "$$ H(s) = A \\frac{A s^2 + \\frac{\\omega_c\\sqrt{A}}{Q} s + \\omega_c^2}{s^2 + \\frac{\\omega_c\\sqrt{A}}{Q} s + A\\omega_c^2} $$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Butterworth Filters" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The class of Butterworth filters date back to the 1930's. In those days there were no computers doing signal processing so the original Butterworth filters were analog filters." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "scrolled": false }, "outputs": [], "source": [ "for order in [1,2,3,4,5,6,7,8,9]:\n", " b, a = signal.butter(order, [1000,2000], btype='bandpass', analog=True)\n", " #print(b,a)\n", " H = signal.lti(b, a)\n", " w, Hw = H.freqresp()\n", " loglog(w, abs(Hw));" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "plot_poles(H); axis('equal');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## From Analog to Digital Filters" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Analog filter are characterized in the s-domain (extended frequency domain). Digital filters in the z-domain. Most often what interests us most is the frequency response of the filter.\n", "\n", "So what we would like is to have an analog filter $H_a(s)$ and a discrete filter $H_d(z)$ with the same frequency response.\n", "\n", "Remember for an analog filter the frequency reponse is $H_a(j\\omega)$ and for a discrete filter $H_d(e^{j\\omega})$.\n", "\n", "We thus have to map the imaginary axis in the s-domain on the unit circle in the z-domain." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "https://nl.wikipedia.org/wiki/Bilineaire_transformatie" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "def LPFz(Fs, f0, Q):\n", " w0 = 2 * pi * f0 / Fs\n", " alpha = sin(w0) / (2*Q)\n", " \n", " b0 = (1 - cos(w0)) / 2\n", " b1 = 1 - cos(w0)\n", " b2 = (1 - cos(w0)) / 2\n", " a0 = 1 + alpha\n", " a1 = -2 * cos(w0)\n", " a2 = 1 - alpha\n", " \n", " return signal.dlti([b0, b1, b2], [a0, a1, a2], dt=1/Fs)\n", "\n", "dH = LPFz(44100, 1000, 2)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "dH" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "w, dHfres = dH.freqresp(whole=False)\n", "loglog(w/pi * 22050, abs(dHfres));" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "w" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It appears that the method `freqresp` returns frequencies in the range from $0$ to $\\pi$ (as it should be according to the definition)." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "Q = 2\n", "wc = 2*pi*1000;\n", "H2 = signal.lti([wc**2],[1,wc/Q,wc**2])\n", "w2, H2w = H2.freqresp()\n", "loglog(w2/(2*pi), abs(H2w));\n", "xlabel(r'$f$ (Hz)');\n", "\n", "wpi, dHfres = dH.freqresp(w=pi * w2 / 1E5, whole=False)\n", "loglog(wpi/pi * 22050, abs(dHfres));\n", "\n", "b, a = signal.bilinear([wc**2],[1,wc/Q,wc**2], fs=44100)\n", "dH2 = signal.dlti(b, a)\n", "wpi, dHfres = dH2.freqresp(w=pi * w2 / 1E5, whole=False)\n", "loglog((wpi/pi * 22050)[::150], abs(dHfres)[::150], '.');\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Notch Filter" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In the audio notes we find a notch filter as:\n", "\n", "$$ H(s) = \\frac{s^2+1}{s^2 + s/Q + 1} $$\n", "\n", "Again we can shift the notch frequency to $\\omega_c$ by scaling: substitute $s/\\omega_c$ for $s$ leading to:\n", "\n", "$$ H(s) = \\frac{s^2+\\omega_c^2}{s^2 + s \\omega_c/Q + \\omega_c^2}$$\n", "\n", "We now only use the bilinear transform from the signal package to get a discrete signal." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "wc = 2*pi*1000\n", "Q = 2\n", "b, a = signal.bilinear([1,0,wc**2], [1, wc/Q, wc**2], fs=44100)\n", "H = signal.dlti(b, a)\n", "w, Hw = H.freqresp()\n", "loglog(w/pi*22050, abs(Hw));" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Low Shelf Filter" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In the audio notes we find a low shelf filter as:\n", "\n", "$$ H(s) = A \\frac{s^2 + \\frac{\\sqrt{A}}{Q} s + A}{A s^2 + \\frac{\\sqrt{A}}{Q} s + 1} $$ " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Again we can scale the frequencies to put the interesting frequency at $\\omega_c$:\n", "\n", "$$ H(s) = A \\frac{s^2 + \\frac{\\omega_c\\sqrt{A}}{Q} s + \\omega_c^2 A}{A s^2 + \\frac{\\omega_c \\sqrt{A}}{Q} s + \\omega_c^2} $$ " ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "wc = 2*pi*1000\n", "Q = 2\n", "dBgain = 5\n", "A = 10**(dBgain/40)\n", "b, a = signal.bilinear([A, wc*A*sqrt(A)/Q, A**2*wc**2], \n", " [A, wc*A*sqrt(A)/Q, wc**2], fs=44100)\n", "H = signal.dlti(b, a)\n", "w, Hw = H.freqresp()\n", "loglog(w/pi*22050, abs(Hw));" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Digital Filtering of ECG Data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's use a digital filter on practical data. We will consider an ECG signal." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "from scipy.io import wavfile\n", "fs, data = wavfile.read('ecgwav_noise.wav', 'rb')" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "data" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "plot(data[:3000]);" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "x=data\n", "X = rfft(x,n=2048)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [], "source": [ "plot( arange(1025)/1025*500, abs(X)); # the real frequencies along the horizontal axis\n", "ylim([0,1E7])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In the above plot we see the sharp peak at 60 Hz (so an american ECG probably...). We thus need to filter with a notch filter with 'corner' frequency of 60 Hz." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "wc = 2*pi*60\n", "Q = 2\n", "b, a = signal.bilinear([1,0,wc**2], [1, wc/Q, wc**2], fs=fs)\n", "Hnotch = signal.dlti(b, a)\n", "w, Hw = Hnotch.freqresp()\n", "loglog(w/pi*fs/2, abs(Hw));" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "y = signal.lfilter(b,a,x)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "subplot(2,1,1)\n", "plot(x[:3000]);\n", "subplot(2,1,2)\n", "plot(y[:3000]);" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [], "source": [ "Y = rfft(y,n=2048)\n", "subplot(2,1,1)\n", "plot( arange(1025)/1025*500, abs(X)); # the real frequencies along the horizontal\n", "ylim([0,1E7])\n", "subplot(2,1,2)\n", "plot( arange(1025)/1025*500, abs(Y)); # the real frequencies along the horizontal \n", "ylim([0, 1E7])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's try a low shelf filter to get rid of more high frequency noise." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "wc = 2*pi*60\n", "Q = 2\n", "dBgain = 10\n", "A = 10**(dBgain/40)\n", "b, a = signal.bilinear([A, wc*A*sqrt(A)/Q, A**2*wc**2], \n", " [A, wc*A*sqrt(A)/Q, wc**2], fs=fs)\n", "Hlowshelf = signal.dlti(b, a)\n", "w, Hw = Hlowshelf.freqresp()\n", "loglog(w/pi*fs/2, abs(Hw));" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "z = signal.lfilter(b,a,y)\n", "subplot(3,1,1)\n", "plot(x[:3000]);\n", "subplot(3,1,2)\n", "plot(y[:3000]);\n", "subplot(3,1,3)\n", "plot(z[:3000]);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Digital Filtering of Streams of Data" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "Consider the following difference equation:\n", "\n", "$$ y[n] = 0.1 x[n] + 0.9 y[n-1] $$\n", "\n", "Applying the z-transform:\n", "\n", "$$ Y(z) = 0.1 X(z) + 0.9 z^{-1} Y(z) $$\n", "\n", "Thus the transfer function is:\n", "\n", "$$ H(z) = \\frac{0.1}{1-0.9 z^{-1}} $$\n", "\n", "or\n", "\n", "$$ H(z) = \\frac{0.1 z}{z-0.9} $$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's define, analyze and use this filter in Python." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "a = [1.0, -0.9]\n", "b = [0.1, 0]\n", "H = signal.dlti(b, a)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "t, y = H.impulse()\n", "plot(t,y[0][:,0]);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We should get the same impulse response if we made our own impulse function and filter it." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "x = zeros_like(t)\n", "x[0] = 1\n", "y = signal.lfilter(b, a, x)\n", "plot(t, y);" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "def lfilterbufferswrong(b,a,x,buffersize=20):\n", " n=0\n", " y = zeros(0)\n", " while n